"""
1、定义函数，实现首页静态化
"""
from contents.utils import get_categories
from contents.models import ContentCategory
from django.template import loader
from django.conf import settings
import os


# TODO: 首页(index.html)静态化
def generate_static_index_html():
    # 获取商品频道和分类
    # categories动态模版参数，用于构造首页中的三级导航信息
    categories = get_categories()

    # 广告内容
    contents = {}
    # 结构：
    # contents = {
    #     分类对象的.key属性作为键 ：该分类下面的广告对象查询集
    # }

    content_categories = ContentCategory.objects.all()
    for cat in content_categories:
        # cat是每一个ContentCategory对象，代表页面的某一个广告位置
        contents[cat.key] = cat.content_set.filter(status=True).order_by('sequence')    # 只渲染上架的广告

    # 1、构建模版参数
    context = {
        'categories': categories,
        'contents': contents
    }

    # 2、获取模版对象
    template = loader.get_template('index.html')

    # 3、渲染页面数据，首页html字符串
    html_text = template.render(context)

    # 4、保存完整的首页html静态文件index.html
    # settings.BASE_DIR --> /Users/用户名/Desktop/meiduo_project/meiduo_mall/meiduo_mall
    # os.path.dirname(settings.BASE_DIR) --> /Users/用户名/Desktop/meiduo_project/meiduo_mall/
    # os.path.dirname(os.path.dirname(settings.BASE_DIR)) --> /Users/用户名/Desktop/meiduo_project/

    # /Users/用户名/Desktop/meiduo_project/front_end_pc/index.html
    file_path = os.path.join(os.path.dirname(os.path.dirname(settings.BASE_DIR)), 'front_end_pc/index.html')
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(html_text)
